The invention is generally related to computer systems and graphical user interface environments therefor. More particularly, the invention is related to user manipulation of windows and other user interface controls in a graphical user interface environment.
As computers have become more complex and powerful, the manner in which end users or operators interface with computers has grown increasingly important. Early computers relied on switches, lights, and/or punch cards that required an end user to interact essentially in the computers"" native binary languages. Eventually, video displays were developed that enabled end users to interact with computers through textual information and commands. Another significant step in this evolution was the development of graphical user interfaces (GUIs), which permitted end users to interact with computers through the more intuitive operations of xe2x80x9cpointing and clickingxe2x80x9d on graphical display elements with a pointer controlled by a mouse or other user interface device.
Information is often presented to an end user in a GUI environment using a graphical user interface component known as a window. A window may sometimes be used to display a relatively large document with only a portion of the document shown at any given time. Typically, scroll bar controls on the window may then be used to navigate through the document so that a user can view different portions of the document. In addition, using other controls on the window, a user may perform various operations on the window, including moving the window to another position on the display, resizing the window by moving one or more segments of its boundary, minimizing the window into an icon representation, maximizing the window to occupy the entire display, etc. Other windows, such as dialog boxes and the like, may omit one or more of the above-described controls.
Each computer software application executing in a GUI environment is typically allocated one or more windows to present information to and/or receive input from a user. Moreover, a number of computer systems provide the ability to multitaskxe2x80x94that is, to execute more than one computer software application at the same timexe2x80x94such that windows from multiple applications may be displayed on a computer display simultaneously. As a result, a large number of windows may be displayed on a computer system at any given time.
Multiple windows are typically displayed in a computer system in an overlapping fashion, with the top window designated an active window associated with the computer software application to which user input will be directed. Any overlapped portions of inactive windows are hidden from the user. Inactive windows are then typically activated and brought to the top by pointing and clicking on the windows (although other possible user inputs may also be used).
Users often need to access multiple windows quickly and frequently when performing computer tasks. However, when a large number of windows are displayed at the same time on a computer display, it can often become difficult to interact with each window due to the limited space available on the computer display. Windows can become fully hidden behind other windows when the other windows are activated by pointing and clicking, and thereafter are not accessible to a user without a great deal of user interaction. Operations such as moving and resizing are also often burdensome since the controls to perform such actions are defined at specific locations on the windows. Consequently, a user may spend an inordinate amount of time manipulating windows, rather than performing the computer tasks at hand.
Therefore, a significant need exists for an improved manner of manipulating graphical user interface components such as windows and the like in a graphical user interface environment.
The invention addresses these and other problems associated with the prior art in providing a computer system and method in which a window or similar graphical user interface component is manipulated through collision of a pointer controlled by a user with the boundary of the window. Specifically, when it is determined that user manipulation of a pointer along a first vector intersects a boundary segment of a window or the like displayed on a computer display, the boundary segment is moved along a second vector. The second vector may be identical in distance and direction to the first vector, or may represent only a component thereof. Moreover, either the entire boundary of the window may be moved such that the window itself is effectively moved, or one or more segments of the boundary may be maintained at a fixed location such that the window is effectively resized. In addition, this feature may be selectively enabled and/or disabled by a user.
In addition, a pointer may be defined to have a proximity range having a perimeter that defines the extents of the pointer. The perimeter may or may not be coextensive with the visible shape of the pointer. Furthermore, the use of a perimeter permits movement of a window boundary segment to be performed in response to a determination that the perimeter of the pointer intersects the boundary segment during movement of the pointer.
With many embodiments of the invention, when a user attempts to move a pointer across the boundary of a window or the like, at least a segment of the boundary of the window moves as if the pointer were pushing or xe2x80x9cbumpingxe2x80x9d against the boundary segment. This is in contrast to many conventional GUI environments in which a pointer may often be conceptualized to xe2x80x9cfloatxe2x80x9d over the graphical user interface components displayed on a computer display such that the pointer moves freely over the computer display without interacting with the underlying components. Manipulation of such a component with a conventional floating pointer is typically performed in response to user input performed only after the pointer is located within the boundary of the component.
Therefore, embodiments consistent with the invention permit a user to more quickly and easily move and/or resize windows and the like through control of a pointer. Particularly when multiple windows or other graphical user interface components are displayed on a computer display, a user may be able to quickly xe2x80x9cbumpxe2x80x9d such components out of the way to view the information in the hidden areas of other components, thereby facilitating access to information shown in different components.